package com.cw.jeeyt.service.bo.security;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

import lombok.Data;

/**
 * 组织机构视图对象，继承于OrgUnit
 *
 * @author fengmq
 */
@Data
public class SecurityOrgVo implements Serializable {
    private static final long serialVersionUID = -8142922970071282853L;
    /**
     * 机构ID
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private Long orgId;
    /**
     * 上级机构id
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private Long orgParentId;
    /**
     * 上级机构编码
     */
    private String orgParentCode;
    /**
     * 上级机构名称
     */
    private String orgParentName;
    /**
     * 机构级别
     */
    private String orgLevelCode;
    /**
     * 组织机构代码
     */
    private String orgCode;
    /**
     * 机构名称
     */
    private String orgName;
    /**
     * 机构类型
     */
    private String orgType;
    /**
     * 机构状态
     */
    private String orgState;
    /**
     * 机构地址
     */
    private String orgAddress;
    /**
     * 机构邮箱
     */
    private String orgEmail;
    /**
     * 机构邮编
     */
    private String orgPostCode;
    /**
     * 机构电话
     */
    private String orgPhone;
    /**
     * 机构传真
     */
    private String orgFax;
    /**
     * 机构序号
     */
    private Integer orgSort;
    /**
     * 机构负责人,多个时用逗号分隔
     */
    private String managers;
    /**
     * 机构负责人ID，多个时用逗号
     */
    private String managerIds;
    /**
     * 机构分管领导，多个时用逗号分隔
     */
    private String leaders;
    /**
     * 机构分管领导ID，多个时用逗号分隔
     */
    private String leaderIds;
    /**
     * 上级主管机构，多个时用逗号分隔
     */
    private String topOrgs;
    /**
     * 上级主管机构ID，多个时用逗号分隔
     */
    private String topOrgIds;
    /**
     * 备注
     */
    private String orgComment;
    /**
     * 创建人
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private Long createBy;
    /**
     * 创建时间
     */
    private Date createDate;
    /**
     * 修改人
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private Long updateBy;
    /**
     * 修改时间
     */
    private Date updateDate;
    /** 父组织机构名称 */
    private String parentOrgName;
    /** 该组织所拥有的用户 */
    private List<SecurityUserVo> orgUsers = new ArrayList<>();
}
